package com.leetcode;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Date250720 {
    public static void main(String[] args) {


    }
    public int totalFruit(int[] fruits) {
        int left = 0, right = 0;
        int len = fruits.length;
        /*用数组模拟哈希表*/
        int[] hash = new int[len];
        int ret = 0, kinds = 0;
        while(right < len) {
            int in = fruits[right];
            if(hash[in] == 0){
                kinds++;
            }
            hash[in]++;
            while(kinds > 2){
                int out = fruits[left];
                hash[out]--;
                if(hash[out]==0){
                    kinds--;
                }
                left++;
            }
            ret = Math.max(ret, right-left+1);
            right++;
        }
        return ret;
        /*用到哈希表*/
//        Map<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
//        int ret = 0;
//        while(right < len){
//            int in = fruits[right];
//            hashMap.put(in, hashMap.getOrDefault(in, 0)+1);
//            while(hashMap.size() > 2){
//                int out = fruits[left];
//                hashMap.put(out, hashMap.get(out)-1);
//                if(hashMap.get(out)== 0){
//                    hashMap.remove(out);
//                }
//                left++;
//            }
//            ret = Math.max(ret, right-left+1);
//            right++;
//        }
//        return ret;
    }
}
